package com.itlangzi.mybatis.dialect;

/**
 * 数据库分页方言处理
 */
public interface Dialect {

    /**
     * 方言描述
     *
     * @return Dialect Name
     */
    String getDialectName();

    /**
     * 是否支持分页
     *
     * @return Boolean
     */
    boolean supportsPage();

    /**
     * 构建查询总页数的SQL
     *
     * @param originalSQL 原始SQL
     * @return Count SQL
     */
    String buildCountSQL(String originalSQL);

    /**
     * 构建分页的SQL
     *
     * @param originalSQL 原始SQL
     * @param page        开始页 最小值为1
     * @param size        每页记录数 最小值为0
     * @return Page SQL
     */
    String buildPageSQL(String originalSQL, Integer page, Integer size);
}
